{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "6f39e105",
   "metadata": {},
   "source": [
    "# Fuse\n",
    "\n",
    "This tutorial provides users with an overview of how to use fuses in pandapower networks. \n",
    "\n",
    "## General Overview\n",
    "The steps to using fuses in pandapower networks are as follows:\n",
    "1. Create a pandapower network. When creating the network, use create_switch() or create_switches() to create a switch at each fuse location. Evaluate whether the switch is bus-line, bus-trafo, or bus-bus, and specify the location accordingly. \n",
    "2. Create the fuses by calling the Fuse() class. Enter the corresponding switch index and fuse type.\n",
    "3. Perform a protection calculation by calling calculate_protection_times(). \n",
    "\n",
    "## Fuse for Short-Circuit Protection\n",
    "\n",
    "### Example Network 1\n",
    "\n",
    "First, we create a radial pandapower network as shown below.\n"
   ]
  },
  {
   "attachments": {
    "example_network_fuse_1.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "id": "29fdb32c",
   "metadata": {},
   "source": [
    "![example_network_fuse_1.png](attachment:example_network_fuse_1.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "90aa1006",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-17T08:10:52.244391Z",
     "start_time": "2025-10-17T08:10:48.640387Z"
    }
   },
   "outputs": [],
   "source": [
    "from pandapower.create import (\n",
    "    create_empty_network,\n",
    "    create_buses,\n",
    "    create_ext_grid,\n",
    "    create_lines_from_parameters,\n",
    "    create_load,\n",
    "    create_transformer,\n",
    "    create_switches,\n",
    "    create_switch,\n",
    "    create_lines,\n",
    "    create_loads\n",
    ")\n",
    "from pandapower.run import runpp\n",
    "from pandapower import create_std_type\n",
    "from pandapower.protection.protection_devices.fuse import Fuse\n",
    "\n",
    "import warnings\n",
    "warnings.simplefilter(action='ignore', category=FutureWarning)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f93bf0cef7778c03",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-17T08:10:52.493006Z",
     "start_time": "2025-10-17T08:10:52.255625Z"
    }
   },
   "outputs": [],
   "source": [
    "def fuse_example_net1():\n",
    "    net = create_empty_network()\n",
    "    # create buses\n",
    "    create_buses(net, nr_buses=5, vn_kv=[20, 0.4, 0.4, 0.4, 0.4], index=[0, 1, 2, 3, 4], name=None, type=\"n\",\n",
    "                    geodata=[(0, 0), (0, -2), (0, -4), (0, -6), (0, -8)])\n",
    "\n",
    "    # create external grid\n",
    "    create_ext_grid(net, 0, vm_pu=1.0, va_degree=0, s_sc_max_mva=100, s_sc_min_mva=50, rx_max=0.1, rx_min=0.1)\n",
    "    create_lines_from_parameters(net, from_buses=[1, 2], to_buses=[2, 3], length_km=[0.1, 0.1], r_ohm_per_km=0.2067,\n",
    "                                    x_ohm_per_km=0.080424, c_nf_per_km=261, name=None, index=[0, 1], max_i_ka=0.27)\n",
    "\n",
    "    net.line[\"endtemp_degree\"] = 250\n",
    "    # create transformer\n",
    "    create_transformer(net, hv_bus=0, lv_bus=1, std_type=\"0.63 MVA 20/0.4 kV\")\n",
    "\n",
    "    # Define trafo fuses\n",
    "    create_switches(net, buses=[0, 1], elements=[0, 0], et='t', type=\"fuse\")\n",
    "\n",
    "    # Define line fuses\n",
    "    create_switches(net, buses=[1, 2], elements=[0, 1], et='l', type=\"fuse\")\n",
    "\n",
    "    # Define load fuse (bus-bus switch)\n",
    "    create_switch(net, bus=3, element=4, et='b', type=\"fuse\", z_ohm=0.0001)\n",
    "\n",
    "    # define load\n",
    "    create_load(net, bus=4, p_mw=0.1, q_mvar=0, const_z_percent=0, const_i_percent=0, sn_mva=.1,\n",
    "                   name=None, scaling=1., index=0)\n",
    "    return net\n",
    "\n",
    "net = fuse_example_net1()\n",
    "net"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "52fc6977",
   "metadata": {},
   "source": [
    "### Add Fuses to Network\n",
    "\n",
    "Users can add fuses to a network by calling the Fuse class. \n",
    "\n",
    "    INPUT:\n",
    "        **net** (attrdict) - pandapower net\n",
    "\n",
    "        **switch_index** (int) - index of the switch that the fuse acts upon\n",
    "\n",
    "    OPTIONAL:\n",
    "\n",
    "        **fuse_type** (str, \"none\") - string of the fuse type to be used. If it is in the standard library, it\n",
    "        automatically generates the characteristic curve. Otherwise, it has no effect.\n",
    "        Example: fuse_type = \"Siemens NH-1-100\"\n",
    "\n",
    "        **rated_i_a** (float, 0) - the rated current of the fuse in amps\n",
    "\n",
    "        **characteristic_index** (int, 0) - index of the corresponding characteristic curve. It is automatically generated\n",
    "        when characteristic curve is created.\n",
    "\n",
    "        **in_service** (bool, True) - indicates if fuse is currently in service and should be included in protection\n",
    "        computations\n",
    "\n",
    "        **overwrite** (bool, False) - indicates if fuse should replace already existing protection device acting upon\n",
    "        switch\n",
    "\n",
    "        **curve_select** (int, 0) - specifies which curve should be used as characteristic curve. This only has an\n",
    "        effect for fuses that contain two different melting curves (t_min and t_total). For fuses that only have one\n",
    "        characteristic curve (t_avg), curve_select has no effect.\n",
    "\n",
    "        **z_ohm** (float, 0.0001) - gives the resistance of the fuse in ohms. This is used in calculations for bus-bus\n",
    "        switches\n",
    "\n",
    "        **name** (str, None) - name of the fuse. For example, name = \"Line 2 Fuse\"\n",
    "\n",
    "Pandapower contains a standard library of fuses with rated currents ranging from 6.3 A to 1000 A. To add a fuse from the standard library to the network, specify the fuse type when creating the fuse. Additional fuse types can be added by users to the standard library by calling the create_std_type() function. When dealing with additional fuse types, it is recommended to add them to the standard library instead of specifying the parameters when calling the Fuse() class. \n",
    "\n",
    "In our example, we will create one new fuse type to use on the HV side of the transformer, and then use 4 fuse types from the pandapower standard library for the remaining switches in the network. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d0a83406",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-17T08:10:52.524601Z",
     "start_time": "2025-10-17T08:10:52.501231Z"
    }
   },
   "outputs": [],
   "source": [
    "# create dictionary that will be used to add new fuse to standard library\n",
    "# this data is the same as the HV 63A found in the standard library\n",
    "new_fuse_data = {'fuse_type': 'New Fuse',\n",
    "                'i_rated_a': 63.0,\n",
    "                't_avg': 0,\n",
    "                't_min': [10.0, 2.84, 0.368, 0.164, 0.1, 0.0621, 0.0378, 0.0195, 0.01],\n",
    "                't_total': [10.0, 1.82, 0.344, 0.1, 0.0467, 0.0269, 0.01],\n",
    "                'x_avg': 0,\n",
    "                'x_min': [189.0, 220.0, 300.0, 350.0, 393.0, 450.0, 530.0, 700.0, 961.0],\n",
    "                'x_total': [378.0, 500.0, 700.0, 934.0, 1200.0, 1500.0, 2366.0]}\n",
    "\n",
    "# create new standard fuse type\n",
    "create_std_type(net, data=new_fuse_data, name='New Fuse', element=\"fuse\")\n",
    "\n",
    "# create list with the fuse types to be added to the network\n",
    "fuse_type_list = [\"New Fuse\", \"Siemens NH-2-630\", \"Siemens NH-2-425\", \"Siemens NH-2-315\", \"Siemens NH-2-224\"]\n",
    "\n",
    "# add fuses to network\n",
    "for k in range(5):\n",
    "    Fuse(net=net, switch_index=k, fuse_type=fuse_type_list[k])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bcf963f6",
   "metadata": {},
   "source": [
    "### Run Short-circuit Scenario\n",
    "To find the melting times of a fuse in a short-circuit scenario, we first run a short circuit calculation at the desired location in the network. In this example, we run the short circuit calculation at bus 3. When calling sc.calc_sc, make sure to specify branch_results = True."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7c440359",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-17T08:10:54.210720Z",
     "start_time": "2025-10-17T08:10:52.532127Z"
    }
   },
   "outputs": [],
   "source": [
    "import pandapower.shortcircuit as sc\n",
    "sc.calc_sc(net, bus=3, branch_results=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0c5d3ca5",
   "metadata": {},
   "source": [
    "Then, call calculate_protection_times(). By default, this function assumes a short circuit scenario. The results are stored in a dataframe with columns for the switch index (switch_id), protection device type (prot_type), whether or not the device tripped/melted (trip_melt), the activation parameter (act_param, current in kA for fuses) and its value (act_param_val), and the trip/melt time in seconds (trip_melt_time_s). For devices that do not trip/melt in the scenario, the trip/melt time results in infinity.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b94119fc",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-17T08:10:54.242201Z",
     "start_time": "2025-10-17T08:10:54.216782Z"
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "from pandapower.protection.run_protection import calculate_protection_times\n",
    "protection_results = calculate_protection_times(net)\n",
    "protection_results"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b6804484",
   "metadata": {},
   "source": [
    "We see that Fuse 3 melts in 0.145108 seconds. After the fuse melts, the fault is cleared. Fuse 2 serves as a backup in case Fuse 3 fails to melt properly, and Fuse 1 serves as a backup for Fuse 2. "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "711e2d1b",
   "metadata": {},
   "source": [
    "## Fuse for Overload Protection\n",
    "In this example, we create a meshed network with an open disconnecting switch, i.e., the network behaves as two radial branches after the transformer. We simulate a fault occurring in one branch, which melts a fuse. After the fault is cleared, the disconnecting switch is closed to continue providing power to both of the loads. However, we demonstrate that this results in an overload melting of another fuse, which disconnects both loads from the external grid. This result shows a cascading overload effect after a short-circuit event.\n",
    "\n",
    "### Example Network 2: Overload Protection and Cascading Effect"
   ]
  },
  {
   "attachments": {
    "example_network_fuse_2.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "id": "98a88244",
   "metadata": {},
   "source": [
    "![example_network_fuse_2.png](attachment:example_network_fuse_2.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b30e6f5b",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-17T08:10:54.578319Z",
     "start_time": "2025-10-17T08:10:54.307916Z"
    }
   },
   "outputs": [],
   "source": [
    "def fuse_example_net2():\n",
    "    net = create_empty_network()\n",
    "\n",
    "    # create buses\n",
    "    create_buses(net, nr_buses=9, vn_kv=[20, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4],\n",
    "                    index=[0, 1, 2, 3, 4, 5, 6, 7, 8], name=None, type=\"n\",\n",
    "                    geodata=[(0, 0), (0, -2), (-2, -4), (-2, -6), (-2, -8), (2, -4), (2, -6), (2, -8), (2, -10)])\n",
    "\n",
    "    # create external grid\n",
    "    create_ext_grid(net, 0, vm_pu=1.0, va_degree=0, s_sc_max_mva=500, s_sc_min_mva=80, rx_max=0.1, rx_min=0.1)\n",
    "\n",
    "    # create lines\n",
    "    create_lines(net, from_buses=[1, 2, 3, 1, 5, 6, 7, 6], to_buses=[2, 3, 4, 5, 6, 7, 8, 4],\n",
    "                    length_km=[0.2, 0.2, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1], std_type=\"94-AL1/15-ST1A 0.4\")\n",
    "\n",
    "    net.line[\"endtemp_degree\"] = 250\n",
    "\n",
    "    # create transformer\n",
    "    create_transformer(net, hv_bus=0, lv_bus=1, std_type=\"0.25 MVA 20/0.4 kV\")\n",
    "\n",
    "    # define trafo fuses\n",
    "    create_switches(net, buses=[0, 1], elements=[0, 0], et='t', type=\"fuse\")\n",
    "\n",
    "    # define line fuses\n",
    "    create_switches(net, buses=[1, 2, 3, 1, 5, 6, 7], elements=[0, 1, 2, 3, 4, 5, 6], et='l', type=\"fuse\")\n",
    "\n",
    "    # define disconnecting switch\n",
    "    create_switch(net, bus=6, element=7, et='l', type=\"DS\", closed=False)\n",
    "\n",
    "    # define load\n",
    "    create_loads(net, buses=[3, 4], p_mw=[0.1, 0.05], q_mvar=0, const_z_percent=0, const_i_percent=0, name=None,\n",
    "                    index=[0, 1])\n",
    "\n",
    "    return net\n",
    "\n",
    "net = fuse_example_net2()\n",
    "net"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a77e239b",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-17T08:10:54.671102Z",
     "start_time": "2025-10-17T08:10:54.644527Z"
    }
   },
   "outputs": [],
   "source": [
    "# assign fuses to switches\n",
    "fuse_list = ['HV 25A', 'Siemens NH-2-400', 'Siemens NH-2-250', 'Siemens NH-2-224', 'Siemens NH-2-200',\n",
    "             'Siemens NH-1-160', 'Siemens NH-1-125', 'Siemens NH-1-100', 'Siemens NH-1-80']\n",
    "for k in range(9):\n",
    "    Fuse(net=net, switch_index=k, fuse_type=fuse_list[k])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "05cdb395",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-17T08:10:54.778Z",
     "start_time": "2025-10-17T08:10:54.709953Z"
    }
   },
   "outputs": [],
   "source": [
    "# perform short circuit calculation at bus 3\n",
    "sc.calc_sc(net, bus=3, branch_results=True)\n",
    "\n",
    "# calculate protection times\n",
    "protection_results = calculate_protection_times(net, scenario='sc')\n",
    "protection_results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c782c26e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-17T08:10:54.870991Z",
     "start_time": "2025-10-17T08:10:54.845597Z"
    }
   },
   "outputs": [],
   "source": [
    " # for fuse with the fastest melting time, melt the corresponding switch\n",
    "net.protection.object.at[protection_results.trip_melt_time_s.idxmin()].status_to_net(net)\n",
    "\n",
    "# check switch status\n",
    "net.switch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e6fd1f9d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-17T08:10:55.132134Z",
     "start_time": "2025-10-17T08:10:55.116082Z"
    }
   },
   "outputs": [],
   "source": [
    "# after fault is cleared, close the CB at bus 6 so that Load 0 continues to get power\n",
    "net.switch.closed.at[9] = True\n",
    "\n",
    "net.switch"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6600df6b",
   "metadata": {},
   "source": [
    "After the fault is cleared, the grid resumes normal power flow. We now check to see if any of the fuses melt due to potential overload effects. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6e7d78c2",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-17T08:10:56.944806Z",
     "start_time": "2025-10-17T08:10:55.328804Z"
    }
   },
   "outputs": [],
   "source": [
    "# perform power flow calculation\n",
    "runpp(net)\n",
    "\n",
    "# check if any fuses melt during regular power flow after fault has been cleared\n",
    "overload_results = calculate_protection_times(net, scenario=\"pp\")\n",
    "overload_results"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f6cfc021",
   "metadata": {},
   "source": [
    "We see that Fuse 6 melts in the fastest amount of time. We modify the network accordingly. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "10f7c77c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-17T08:10:57.364716Z",
     "start_time": "2025-10-17T08:10:57.343929Z"
    }
   },
   "outputs": [],
   "source": [
    "# fastest-melting fuse opens switch\n",
    "net.protection.object.at[overload_results.trip_melt_time_s.idxmin()].status_to_net(net)\n",
    "\n",
    "net.switch"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4a31ec9a",
   "metadata": {},
   "source": [
    "After fuse 6 melted, there is no path for power to flow to either load. This is confirmed when we run a power flow calculation of the grid after this change. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f54950c8",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-17T08:10:57.615041Z",
     "start_time": "2025-10-17T08:10:57.486251Z"
    }
   },
   "outputs": [],
   "source": [
    "# run power flow one more time\n",
    "runpp(net)\n",
    "\n",
    "# loads are no longer powered\n",
    "net.res_load"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3e3151ce",
   "metadata": {},
   "source": [
    "## Plotting Fuse Characteristic Curves\n",
    "\n",
    "To plot a fuse characteristic curve, call the Fuse.plot_protection_characteristic() method. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cfb4a2c9",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-17T08:10:58.737940Z",
     "start_time": "2025-10-17T08:10:57.895627Z"
    }
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.figure(1)\n",
    "net.protection.object.at[1].plot_protection_characteristic(net)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d897bb17",
   "metadata": {},
   "source": [
    "To add multiple fuse characteristics and currents, use a for loop and the results from calculate_protection_times()."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "44b00780",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-17T08:10:59.625483Z",
     "start_time": "2025-10-17T08:10:58.755165Z"
    }
   },
   "outputs": [],
   "source": [
    "plt.figure(2)\n",
    "\n",
    "# plot characteristic curve for each fuse in net\n",
    "protection_devices = net.protection.object\n",
    "for p in protection_devices:\n",
    "    p.plot_protection_characteristic(net)\n",
    "\n",
    "# reset plot limits manually\n",
    "plt.xlim(10, 100000)\n",
    "plt.ylim(0.001, 10000)\n",
    "\n",
    "# add overload current at Fuse 6\n",
    "plt.axvline(overload_results.activation_parameter_value.at[6]*1000)\n",
    "\n",
    "# show plot\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
